if !exists(param.A)
  M291 S1 T0 R"Use Auto Calibration macro" P"Using separate calibration macros may cause issues.<br>Please use the Auto Calibration macro"
  abort "Error: Auto Calibration macro required."



;=====Test with a probe======
M98 R1 P"0:/sys/attachedcheck.g" ; make sure probe is conected, pick if negative and leave relay active
M558 K0 P8 C"1.io4.in" H5 F100 T18000              ; define Z probe parameters
M98 P"0:/sys/user/actions/ProbeOffset.g"

G90
G1 F18000 Z15 X{-155 - sensors.probes[0].offsets[0]} Y{0 - sensors.probes[0].offsets[1]}

G91
G38.2 K0 Z-5 ; Probe Z
G4 P260
var pl1 = move.axes[2].machinePosition
G1 Z2

G38.2 K0 Z-5 ; Probe Z
G4 P260
var pl2 = move.axes[2].machinePosition
G1 Z2

G38.2 K0 Z-5 ; Probe Z
G4 P260
var pl3 = move.axes[2].machinePosition
G1 Z5

var pl = (var.pl1 + var.pl2 + var.pl3)/3

G90
G1 F18000 X{155 - sensors.probes[0].offsets[0]} Y{0 - sensors.probes[0].offsets[1]}

G91
G38.2 K0 Z-5 ; Probe Z
G4 P260
var pr1 = move.axes[2].machinePosition
G1 Z2

G38.2 K0 Z-5 ; Probe Z
G4 P260
var pr2 = move.axes[2].machinePosition
G1 Z2

G38.2 K0 Z-5 ; Probe Z
G4 P260
var pr3 = move.axes[2].machinePosition
G1 Z10

var pr = (var.pr1 + var.pr2 + var.pr3)/3


M98 P"place.g"
M98 P"0:/sys/nozzlewipe.g" T0

;=====Test with a nozzle====
M42 P4 S1                      ; Turn on relay

G90
G1 F18000 X-155 Y0 Z2
M98 P"0:/sys/nozzleprobe.g" Z1
var nl = move.axes[2].machinePosition
G1 Z2

G90

G1 F18000 X155 Y0
M98 P"0:/sys/nozzleprobe.g" Z1
var nr = move.axes[2].machinePosition
G1 Z5

;====Calculate  Values====

var dl = var.pl - var.nl
var dr = var.pr - var.nr
var dd = var.dl - var.dr

echo "Mesh Left "^{var.dl}^" mm"
echo "Mesh Right "^{var.dr}^" mm"


echo "Mesh Competition Measured "^{var.dd}^" mm"


; Update global auto compensation variable
set global.xCompAuto = var.dd

; Write updated value to XCompAuto.g
echo >"0:/sys/user/variables/XCompAuto.g" "set global.xCompAuto = "^{var.dd}
